$(function(){ 
	$('#mainUI .list-content-div table thead tr th:last').attr("width","10%");
});

$('#PositionMapModal').on('show.zui.modal', function() {
	Map();
});

//通过IP定位
function myFun(result){
	var cityName = result.name;
	map.setCenter(cityName);
	$('#CurrentLocation').text("当前IP定位城市: "+cityName);
}

//ip定位
function ipLocation(){
	console.log("ip定位！");
	setTimeout(function(){ 
		var myCity = new BMap.LocalCity();
		myCity.get(myFun);
	}, 500);
}

//用经纬度设置地图中心点
function theLocation(){
	setTimeout(function(){ 
		console.log("用经纬度设置地图中心点！");
		if(document.getElementById("longitude").value != ""||document.getElementById("longitude").value != null && document.getElementById("latitude").value != ""||document.getElementById("latitude").value != null){
			map.clearOverlays(); 
			var new_point = new BMap.Point(document.getElementById("longitude").value,document.getElementById("latitude").value);
			var marker = new BMap.Marker(new_point);  // 创建标注
			map.addOverlay(marker);              // 将标注添加到地图中
			map.panTo(new_point); 
			geoc.getLocation(new_point, function(rs){
		        //addressComponents对象可以获取到详细的地址信息
		        var addComp = rs.addressComponents;
		        var cityName = addComp.city;//获取城市
		        $('#CurrentLocation').text("目标位置所在城市: "+cityName);
		    });  
		}
	}, 500);
}

function Map(){
	createMap();
	setMapEvent();
	addMapControl();

	map.addEventListener("click", function(e){   
	    //通过点击百度地图，可以获取到对应的point, 由point的lng、lat属性就可以获取对应的经度纬度     
	    var pt = e.point;
	    geoc.getLocation(pt, function(rs){
	        //addressComponents对象可以获取到详细的地址信息
	        var addComp = rs.addressComponents;
	        if(addComp.province == addComp.city){
	        	var site =addComp.city + "" + addComp.district + "" + addComp.street + "" + addComp.streetNumber;
	        }else{
	        	var site = addComp.province + "" + addComp.city + "" + addComp.district + "" + addComp.street + "" + addComp.streetNumber;
	        }
	        
	        //将对应的HTML元素设置值
	        $("#longitude").val(pt.lng);
	        $("#latitude").val(pt.lat);
	        $("#position_name").val(site);
	        
	    });        
	});
	
	
}
//创建marker
function addMarker(){
    for(var i=0;i<markerArr.length;i++){
        var json = markerArr[i];
        var p0 = json.point.split("|")[0];
        var p1 = json.point.split("|")[1];
        var point = new BMap.Point(p0,p1);
        var iconImg = createIcon(json.icon);
        var marker = new BMap.Marker(point,{icon:iconImg});
        var iw = createInfoWindow(i);
        var label = new BMap.Label(json.title,{"offset":new BMap.Size(json.icon.lb-json.icon.x+10,-20)});
        marker.setLabel(label);
        //map.addOverlay(marker);
        label.setStyle({
            borderColor:"#808080",
            color:"#333",
            cursor:"pointer"
        });

        (function(){
            var index = i;
            var _iw = createInfoWindow(i);
            var _marker = marker;
            _marker.addEventListener("click",function(){
                this.openInfoWindow(_iw);
            });
            _iw.addEventListener("open",function(){
                _marker.getLabel().hide();
            })
            _iw.addEventListener("close",function(){
                _marker.getLabel().show();
            })
            label.addEventListener("click",function(){
                _marker.openInfoWindow(_iw);
            })
            if(!!json.isOpen){
                label.hide();
                _marker.openInfoWindow(_iw);
            }
        })()
    }
}
//创建InfoWindow
function createInfoWindow(i){
    var json = markerArr[i];
    var iw = new BMap.InfoWindow("<b class='iw_poi_title' title='" + json.title + "'>" + json.title + "</b><div class='iw_poi_content'>"+json.content+"</div>");
    return iw;
}

//创建一个Icon
function createIcon(json){
    var icon = new BMap.Icon("http://app.baidu.com/map/images/us_mk_icon.png", 
    		new BMap.Size(json.w,json.h),{
    	imageOffset: new BMap.Size(-json.l,-json.t),
    	infoWindowOffset:new BMap.Size(json.lb+5,1),
    	offset:new BMap.Size(json.x,json.h)})
    return icon;
}

//创建地图
function createMap(){
	console.log("创建地图！");
	//在百度地图容器中创建一个地图
    var map = new BMap.Map("allmap");
    var point = new BMap.Point(121.011319,31.635353);//始终定义一个中心点坐标以防获取经纬度失败导致不能生成地图的BUG
    map.centerAndZoom(point,12);//设定地图的中心点和坐标并将地图显示在地图容器中
	map.enableScrollWheelZoom(true);
	var geoc=new BMap.Geocoder();
    window.map = map;//将map变量存储在全局
    window.geoc = geoc;//将geoc变量存储在全局
}




//地图事件设置函数：
function setMapEvent(){
    map.enableDragging();//启用地图拖拽事件，默认启用(可不写)
    map.enableScrollWheelZoom();//启用地图滚轮放大缩小
    map.enableDoubleClickZoom();//启用鼠标双击放大，默认启用(可不写)
    map.enableKeyboard();//启用键盘上下左右键移动地图
}

//地图控件添加函数：
function addMapControl(){
	map.addControl(new BMap.NavigationControl());    
	map.addControl(new BMap.ScaleControl());    
	map.addControl(new BMap.OverviewMapControl());    
	map.addControl(new BMap.MapTypeControl());   
}

//搜索
$('#searchKeyword').on('keydown',function(event){  
    if(event.keyCode == "13"){  
       $("#mapsearch").click();
    }  
    });
$("#mapsearch").click(function() { 
	var searchKeyword=$("#searchKeyword").val();;
	var local = new BMap.LocalSearch(map, {
      	renderOptions: {map: map}
	});
	local.search(searchKeyword);
	});

	//关闭位置对话框
	$('.MapModalClose').on('click', function() { 
	    $('#PositionMapModal').modal('hide');
	});

	 //新增窗口打开
	 $('.row>.col-xs-1>a').on('click', function() {
		$(".MapModalAddDetermine").removeClass('hidden');
		$(".MapModalEditDetermine").addClass('hidden');
		$("#PositionForm :input").val('');
		//编码接口
		$.post($('body').attr('ctxPath')+'/position/generateCode?t='+new Date().getTime(),function(data){
			var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
			nodes = zTree.getSelectedNodes(),
			treeNode = nodes[0];
			if(!data.flag){
				layer.alert(data.msg);
				return;
			}else{
				$('#position_code').val(data.msg);
			}
			$('#position_name').val("");
			$('#position_desc').val("");
			if(treeNode==null){
		 		$('#long_code').val(data.msg);
		 	}else{
		 		$('#region_number').val(treeNode.regionCode);
		 		$('#long_code').val(treeNode.longCode+"!"+data.msg);
		 	}
		 var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
		 	nodes = zTree.getSelectedNodes(),
		 	treeNode = nodes[0];
		 	if (nodes.length == 0) {
		 		layer.open({
		 			  title: '消息提示',
		 			  offset: '200px'
		 			  ,content:"请选择区域！"
		 			});     
		 			$('body').scrollTop(100);
		 		return;
		 	}
		$('#PositionMapModal').modal({
		 	moveable:false,
		 	show: true
		 });
		});
		ipLocation();
	 });
	 
	    //新增位置保存
		$(".MapModalAddDetermine").on('click',function(){
			$("#PositionId").val('');
			 $.post($('body').attr('ctxPath') +'/position/addPosit?t='+new Date().getTime(),$('#PositionForm').serialize(),function(data){
				 if(data.state){
					 $('#PositionMapModal').modal('hide');
					 listui.refresh("mainUI");
					 layer.open({
			 				  title: '消息提示',
			 				  offset: '200px',
			 				  content: data.msg
			 				});
			 				$('body').scrollTop(100);
					}else if(data.state!=null){
						layer.open({
			 				  title: '消息提示',
			 				  offset: '200px',
			 				  content:data.msg
			 				});
			 				$('body').scrollTop(100);
					}else{
						layer.open({
			 				  title: '消息提示',
			 				  offset: '200px',
			 				  content:"添加失败!"
			 				});
			 				$('body').scrollTop(100);
					}
		});
	});
		
	 //编辑位置保存
	 $(".MapModalEditDetermine").on('click',function(){
		 $.post($('body').attr('ctxPath') +'/position/editPosit?t='+new Date().getTime(),$('#PositionForm').serialize(),function(data){
			 if(data.state){
				 $('#PositionMapModal').modal('hide');
				 listui.refresh('mainUI');
				 layer.open({
		 				  title: '消息提示',
		 				  offset: '200px',
		 				  content: data.msg
		 				});
		 				$('body').scrollTop(100);
				}else if(data.state!=null){
					layer.open({
		 				  title: '消息提示',
		 				  offset: '200px',
		 				  content:data.msg
		 				});
		 				$('body').scrollTop(100);
				}else{
					layer.open({
		 				  title: '消息提示',
		 				  offset: '200px',
		 				  content:"添加失败!"
		 				});
		 				$('body').scrollTop(100);
				}
		 });
	 });

//数据表格搜索参数
function getCustomQueryData() {
	var longCode = $('#long_number').val();
	if (longCode == "") {
		return false;
	}
	return {
		'longCode' : longCode
	}
}
// 数据表格操作按钮
function handleOpRow(tr, obj, container) {
	tr.append($('<td/>').addClass('op').append($('<a/>', {
		"href" : "javascript:;",
		"data-id" : obj.id
	}).addClass('edits').text('编辑')).append($('<span/>').text(' | ')).append($('<a/>', {
		"href" : "javascript:;",
		"data-id" : obj.id
	}).addClass('delete').text('删除')));
}

$('.list-content-div table>tbody').delegate('tr>td>.delete', 'click', function() {
	var id = $(this).attr('data-id');
	$.get($('body').attr('ctxPath')+'/position/checkPosit/'+id+'?t='+new Date().getTime(),function(data){
		if(/*data.state*/ false){
			layer.msg("该位置已被引用，无法删除！");
			}else{
				layer.confirm('确定删除该记录吗？', {
					  btn: ['确认','取消'] //按钮
					}, function(){
				//根据id获取位置信息
				$.get($('body').attr('ctxPath')+'/position/deletePosit/'+id+'?t='+new Date().getTime(),function(data){
						if(data.state){
							 listui.refresh('mainUI');
							layer.open({
				 				  title: '消息提示',
				 				  offset: '200px',
				 				  content: data.msg
				 				});
				 				$('body').scrollTop(100);
						}
					});
				})	
			}
     });
	
	});
//编辑位置打开
$('.list-content-div table>tbody').delegate('tr>td>.edits', 'click', function() {
	$(".MapModalAddDetermine").addClass('hidden');
	$(".MapModalEditDetermine").removeClass('hidden');
	var id = $(this).attr('data-id');
	$.get($('body').attr('ctxPath')+'/position/checkPosit/'+id+'?t='+new Date().getTime(),function(data){
		if(/*data.state  验证是否被引用*/ false){
			layer.msg("该位置已被引用，无法编辑！");
			}else{
				//根据id获取位置信息
				$.get($('body').attr('ctxPath')+'/position/getPosit/'+id+'?t='+new Date().getTime(),function(data){
						if(data.state){
							var posit=data.obj//obj：BtPositionInfo对象
							for(var item in posit){
		                            var name = item,val = posit[item];
		                            $('#PositionForm :input[name=' + name + ']').val(val);
							}
							$('#PositionMapModal').modal({
							 	moveable:false,
							 	show: true
							 });
							 theLocation();
						}else{
							layer.open({
				 				  title: '消息提示',
				 				  offset: '200px',
				 				  content:"获取数据失败!"
				 				});
				 				$('body').scrollTop(100);
						}
					});
			}
	});
	});

